/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import controladoresJPA.CategoriaJpaController;
import java.util.List;
import javax.annotation.Resource;
import javax.ejb.EJBContext;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.inject.Named;
import javax.persistence.NoResultException;
import modelo.Categoria;

/**
 *
 * @author Francisco
 */
@Named("categoriaBI")
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class CategoriaBI {
    
    @Resource
    private EJBContext eJBContext;
    
    public void crear(Categoria categoria, Integer idCategoriaPadre) throws Exception{
        try{
            CategoriaJpaController cjc = new CategoriaJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            if(idCategoriaPadre!=null){
                Categoria categoriaPad = cjc.findCategoria(idCategoriaPadre);
                categoria.setIdCategoriaPadre(categoriaPad);
            }
            cjc.create(categoria);
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("Error al crear la categoria");
        }
    }
    
    public List<Categoria> categoriasActivasPorUsuario(Integer idUsuario)throws Exception{
        try{
            CategoriaJpaController cjc = new CategoriaJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            List<Categoria> categorias = cjc.findActiveByIdUsuario(idUsuario);
            return categorias;
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("Error al buscar las categorias");
        }
    }
    
    public Categoria buscarCategoria(Integer idCategoria) throws Exception{
        try{
            CategoriaJpaController cjc = new CategoriaJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            Categoria cat = cjc.findCategoria(idCategoria);
            return cat;
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("Error al buscar las categorias");
        }
    }
    
    public Categoria buscarCategoria(String nombreCat, Integer idUsuario) throws Exception {
        try{
            CategoriaJpaController cjc = new CategoriaJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            Categoria cat = cjc.findCategoriaByNombre(nombreCat, idUsuario);
            return cat;
        }catch(NoResultException nre){
            return null;
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("Error al buscar las categorias");
        }
    }
    
    public void actualizaCategoria(Categoria cat) throws Exception{
        try{
            CategoriaJpaController cjc = new CategoriaJpaController(eJBContext.getUserTransaction(), EFServicio.getEmf());
            cjc.edit(cat);
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("Error al actualizar la categoria");
        }
    }
}
